#ifndef BASEENTITY_H
#define BASEENTITY_H

/*
 BaseEntity.h
 
 ==============================================================
 
 This class is a base class and is meant to be derived from.
 
 ==============================================================
 */

class BaseEntity
{
private:
    //Every entity has a unique ID
    int m_ID;
    
    //This is the next valid ID. Each time a new entity is instantiated
    //the value is updated
    static int nextValidID;
    
    //This is called within the constructor to make sure the ID is set
    //correctly.
    void setID(int val);
    
public:
    
    //Constructor
    BaseEntity(int id);
    
    //Destructor
    virtual ~BaseEntity(){};
    
    //All entities must implement an update function
    virtual void Update() = 0;
    
    //Function to return an ID
    int ID() const;
};

#endif

